home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / include / libol / resource.h < prev    next >
C/C++ Source or Header  |  2005-10-16  |  3KB  |  87 lines

  1. /***************************************************************************
  2.  *
  3.  * Copyright (c) 1998-1999 Niels M÷ller
  4.  * Copyright (c) 1999 BalaBit Computing
  5.  * 
  6.  * This program is free software; you can redistribute it and/or modify
  7.  * it under the terms of the GNU General Public License as published by
  8.  * the Free Software Foundation; either version 2 of the License, or
  9.  * (at your option) any later version.
  10.  *
  11.  * This program is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  * GNU General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU General Public License
  17.  * along with this program; if not, write to the Free Software
  18.  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  19.  *
  20.  * $Id: resource.h,v 1.3 1999/07/10 13:23:09 bazsi Exp $
  21.  *
  22.  ***************************************************************************/
  23.  
  24. #ifndef __RESOURCE_H_INCLUDED
  25. #define __RESOURCE_H_INCLUDED
  26.  
  27. #include "objects.h"
  28. #include "queue.h"
  29.  
  30. #define CLASS_DECLARE
  31. #include "resource.h.x"
  32. #undef CLASS_DECLARE
  33.  
  34. /* CLASS:
  35.    (class
  36.      (name resource)
  37.      (vars
  38.        ; Hack to check liveness before the resource gets gc:ed.
  39.        ; Live resources should never be forgotten.
  40.        (alive special int #f dont_free_live_resource)
  41.        
  42.        (kill method void)))
  43. */
  44.  
  45. #define KILL_RESOURCE(r) ((r)->kill((r)))
  46.  
  47. /* For the resource list. It is doubly linked to make removing
  48.  * elements easy. */
  49.  
  50. struct resource_node
  51. {
  52.   struct ol_queue_node header;
  53.   struct resource *resource;
  54. };
  55.  
  56. /* FIXME: Non-virtual methods would make sense for this class. Or
  57.  * perhaps we should use a struct rather than a class? */
  58. /* CLASS:
  59.    (class
  60.      (name resource_list)
  61.      (vars
  62.        (q special-struct "struct ol_queue"
  63.                          do_mark_resources do_free_resources)
  64.  
  65.        ; Returns the node.
  66.        ; NOTE: This pointer should only be stored together with
  67.        ; the resource list object pointer, as the nodes are not gc:ed
  68.        ; individually.  
  69.        (remember method "struct resource_node *" "struct resource *r")
  70.  
  71.        ; Kills the resource and unlinks and deallocates the node.
  72.        (kill_resource method void "struct resource_node *n")
  73.        
  74.        (kill_all method void)))
  75. */
  76.  
  77. /* For now, don't use the value returned from remember. */
  78. #define REMEMBER_RESOURCE(l, r) (((l)->remember((l), (r))))
  79.  
  80. #define KILL_RESOURCE_NODE(l, n) ((l)->kill_resource((l), (n)))
  81. #define KILL_RESOURCE_LIST(l) ((l)->kill_all((l)))
  82.  
  83. /* Allocates an empty list. */
  84. struct resource_list *empty_resource_list(void);
  85.  
  86. #endif 
  87.